package com.ciccwm.auth.strategy;

import com.ciccwm.auth.model.OAuth2TokenResponse;

/**
 * 认证策略接口
 */
public interface AuthenticationStrategy {
    
    /**
     * 获取策略类型
     */
    String getType();
    
    /**
     * 执行认证
     *
     * @param params 认证参数
     * @return 认证结果
     */
    OAuth2TokenResponse authenticate(AuthenticationParams params);
    
    /**
     * 验证认证参数
     *
     * @param params 认证参数
     * @return 是否有效
     */
    boolean validate(AuthenticationParams params);
    
    /**
     * 认证参数接口
     */
    interface AuthenticationParams {
        /**
         * 获取参数类型
         */
        String getType();
    }
} 
